package routers

import (
	"github.com/gin-gonic/gin"
	"go_web/controller"
	"go_web/logger"
	"net/http"
)

//此文件定义所有的路由信息

func SetupRouter() *gin.Engine {
	//创建一个路由实例
	r := gin.New()

	//使用封装的日志中间件
	r.Use(logger.GinLogger(), logger.GinRecovery(true))

	//路由

	r.POST("/auth", controller.JWTHandler) //对用户身份的校验

	r.POST("/register", controller.RegisterHandler) //注册
	r.POST("/login", controller.LoginHandler)       //登陆

	//2.正常对路由进行匹配
	//路由分组
	v1 := r.Group("/api/v1")
	{
		v1.POST("/", controller.IndexHandler)

		//http://127.0.0.1:8081/api/v1/community
		v1.GET("/community", controller.CommunityHandler) //全部社区

		//http://127.0.0.1:8081/api/v1/community?id=1001
		v1.GET("/community/:id", controller.CommunityDetailHandler) //一个社区详细信息

		//帖子
		v1.POST("/post", controller.PostHandler) //创建帖子
		v1.GET("/post/:id", controller.PostDetailHandler)
		v1.GET("/post", controller.PostListHandler)

		v1.POST("/comment", controller.CommentHandler)    //创建评论
		v1.GET("/comment", controller.CommentListHandler) //评论列表

	}

	//测试的
	r.GET("/ping", func(ctx *gin.Context) {
		ctx.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})

	//当没有匹配到路由时候
	r.NoRoute(func(ctx *gin.Context) {
		ctx.JSON(http.StatusOK, gin.H{
			"msg": "404",
		})
	})

	//将路由实例返回
	return r
}
